/** 对象池 */
class ObjectPool {
  static pool: {[key: string]: Array<ClickMC | egret.BitmapText>} = {};

  /**
   * 存放对象
   * @param key 动画名称/字体名称（与json、png、fnt文件名同名）
   * @param obj 动画对象/字体对象（如ClickMC对象）
   */
  static cache(key: string, obj: ClickMC | egret.BitmapText): void {
    if (!(key in this.pool)) {
      this.pool[key] = [];
    }
    this.pool[key].push(obj);
  }
  
  /**
   * 获取对象
   * 设计为数组再用shift取出，防止连续播放相同动画时使用同一个动画对象（导致前面的动画未播放完就消失）
   * @param key 动画名/字体名、字典键
   * @returns 动画对象/字体对象（如ClickMC对象）
   */
  static getObj(key: string): ClickMC | egret.BitmapText {
    if (key in this.pool) {
      let mcObjList = this.pool[key]
      if (mcObjList.length) {
        return mcObjList.shift(); // 取出数组第一项的同时从数组移除该对象
      }
    }
    return null;
  }
}